#include <OgreFrameListener.h>
#include <OgrePrerequisites.h>
#include <framelistener.h>

#define DLL_EXPORT __declspec(dllexport)

bool FrameListenerWrapper::frameStarted(const FrameEvent &evt)
{
    if(ptrToFunc_Started)
    {
        return ptrToFunc_Started(this, evt);
    }
    return true;
}

bool FrameListenerWrapper::frameEnded(const FrameEvent &evt)
{
    if(ptrToFunc_Ended)
    {
        return ptrToFunc_Ended(this, evt);
    }
    return true;
}

bool FrameListenerWrapper::frameRenderingQueued(const FrameEvent &evt)
{
    if(ptrToFunc_RQ)
    {
        return ptrToFunc_RQ(this, evt);
    }
    return true;
}

extern "C" DLL_EXPORT void *getFrameListenerWrapper(fp ptrToF_S, fp ptrToF_E, fp ptrToF_RQ)
{
    FrameListenerWrapper *wrapper = new FrameListenerWrapper();
    wrapper->ptrToFunc_Started = ptrToF_S;
    wrapper->ptrToFunc_Ended = ptrToF_E;
    wrapper->ptrToFunc_RQ = ptrToF_RQ;
    return wrapper;
}
